發行版本 Kubernetes Release
遵循語意化版本(Semantic Versioning)管理命名,分有3個部份x.y.z
,例如v1.31.0
每次更新的Release包含所有controle plane的元件,但部分元件位於不同project,所以版本可能不同,例如:ETCD server或CoreDNS,而更新的時候,元件並不一定要全為相同版本,可有的版本差異:
整體而言,更新的步驟如下:
在開始前,根據官方建議,指定使用新的package repositoriespkgs.k8s.io
,原本的apt.kubernetes.io and yum.kubernetes.io已在2023年9月棄用,在control plane及worker nodes皆必須先完成
首先確定自己的OS作業系統版本:cat /etc/*release*
,根據官網指示
假設是Debian, Ubuntu或其他使用apt/apt-get
的作業系統
v1.28
部份,視需求更新為目標版本echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
若以kubeadm建立叢集,前置作業先更新kubeadm
control plane
0. 更新軟體資料庫並查看可用的K8s版本apt update
sudo apt-cache madison kubeadm
kubelet
需在套用更新後,手動更新kubeadm upgrade plan
apt get upgrade -y kubeadm=<version,例如v1.13.4>
kubeadm upgrade apply <version,例如v1.13.4>
kubectl get nodes
apt get upgrade -y kubelet=<version, 例如1.12.0>
systemctl daemon-reload
systemctl restart kubelet
kubectl get nodes
,此時再檢查,即可看到更新後的control plane nodeworker nodes更新策略
建議是一次更新一個node,或是一次只更新少部分node,更新的策略有3種
更新的流程如下:
apt-get upgrade -y kubeadm=<version>
kubectl drain <node-to-drain> --ignore-daemonsets
kubeadm upgrade node
apt-get upgrade -y kubelet=<version>
systemctl daemon-reload
systemctl restart kubelet
kubectl uncordon <name>
在官網上有針對各版本的詳細更新指示及指令,Upgrading kubeadm clusters